%%%-------------------------------------------------------------------
%%% @author liuwentao
%%% @doc
%%%         背包数据结构
%%% @end
%%% Created : 19. 7月 2021 14:45
%%%-------------------------------------------------------------------
-author("liuwentao").

%% 背包类型定义
-define(package_type_bag, 1).                   %% 背包
-define(package_type_store, 2).                 %% 仓库

-define(free_cell(M, N), lists:seq(M, N)).

%% 背包大小定义
-define(package_bag_size, 100).
-define(package_store_size, 25).

%% 背包数据结构
-record(package, {
    %% 包裹类型
    type = ?package_type_bag   :: integer()
    %% 下一个ID
    ,next_id = 1                :: pos_integer()
    %% 包裹容量
    ,volume = 0                 :: non_neg_integer()
    %% 空余格子编号
    ,free_cell = []             :: list()
    %% 物品数据
    ,items = []                 :: [tuple()]
}).
